package appcus

import (
	"counter-help/admin/server/global"
	"counter-help/admin/server/model/app"
	"time"
)

type UserSettingsService struct{}

// CreateUserSettings 创建用户设置
// 如果用户已有设置记录，则先删除再创建
func (s *UserSettingsService) CreateUserSettings(userID uint) error {
	// 删除现有设置
	if err := global.GVA_DB.Where("user_id = ?", userID).Delete(&app.UserSettings{}).Error; err != nil {
		return err
	}

	// 创建新的默认设置（默认不接受任何消息）
	userSettings := app.UserSettings{
		UserID:          userID,
		AcceptOtherMsg:  false, // 默认不接受其他用户消息
		AcceptSysMsg:    false, // 默认不接受系统消息
		AcceptPublicMsg: false, // 默认不接受公众号消息
		CreatedAt:       time.Now(),
		UpdatedAt:       time.Now(),
	}

	// 保存用户设置
	if err := global.GVA_DB.Create(&userSettings).Error; err != nil {
		return err
	}
	return nil
}

// UpdateUserSettings 更新用户设置
func (s *UserSettingsService) UpdateUserSettings(userID uint, acceptOtherMsg, acceptSysMsg, acceptPublicMsg bool) error {
	// 更新用户设置
	updates := map[string]interface{}{
		"accept_other_msg":  acceptOtherMsg,
		"accept_sys_msg":    acceptSysMsg,
		"accept_public_msg": acceptPublicMsg,
		"updated_at":        time.Now(),
	}

	if err := global.GVA_DB.Model(&app.UserSettings{}).Where("user_id = ?", userID).Updates(updates).Error; err != nil {
		return err
	}
	return nil
}

// GetUserSettings 获取用户设置
func (s *UserSettingsService) GetUserSettings(userID uint) (*app.UserSettings, error) {
	var settings app.UserSettings
	if err := global.GVA_DB.Where("user_id = ?", userID).First(&settings).Error; err != nil {
		return nil, err
	}
	return &settings, nil
}
